#ifndef HASHTABLE_H
#define HASHTABLE_H

#include <pthread.h>
#include <stdlib.h>
#include <string.h>

#define HASHTABLE_SIZE 1024

// 哈希表节点结构
typedef struct Node {
    char *key;          // 键 (字符串)
    void *value;        // 值 (可以是任意类型)
    size_t value_size;  // 值的大小
    struct Node *next;  // 指向下一个节点
} Node;

// 哈希表结构
typedef struct {
    Node *table[HASHTABLE_SIZE];              // 哈希表数组
    pthread_mutex_t mutexes[HASHTABLE_SIZE];  // 每个哈希桶的互斥锁
} HashTable;

// 函数声明
HashTable *create_table();
void destroy_table(HashTable *table);
int insert(HashTable *table, const char *key, const void *value, size_t value_size);
void *get(HashTable *table, const char *key);
int remove_key(HashTable *table, const char *key);

#endif
